import os
import time
from loguru import logger
from longguo_ui.config.config import config

"""
日志工具模块，基于loguru实现日志的配置与管理
支持同时输出日志到文件和控制台，自动创建日志目录，
并按文件大小切割日志、自动清理过期日志
"""

# 创建日志目录（若不存在）
if not os.path.exists(config.LOG_DIR):
    os.makedirs(config.LOG_DIR)
    logger.debug(f"创建日志目录: {config.LOG_DIR}")  # 调试级日志，记录目录创建操作

# 生成日志文件名（包含时间戳，确保唯一性）
# 格式: test_年月日_时分秒.log (例如: test_20231001_153045.log)
log_file_name = f"test_{time.strftime('%Y%m%d_%H%M%S')}.log"
# 拼接完整日志文件路径
log_file_path = os.path.join(config.LOG_DIR, log_file_name)
logger.debug(f"日志文件路径: {log_file_path}")

# 配置日志输出到文件
logger.add(
    log_file_path,               # 日志文件路径
    level="INFO",                # 日志级别：INFO及以上级别日志会被记录
    format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}",  # 日志格式：时间 | 级别 | 消息
    rotation="10 MB",            # 日志切割条件：单个文件达到10MB时自动创建新文件
    retention="7 days",          # 日志保留时间：自动删除7天前的日志文件
    encoding="utf-8"             # 文件编码：支持中文
)
logger.info("日志文件输出配置完成")

# 配置日志同时输出到控制台
logger.add(
    sink=lambda msg: print(msg, end=""),  # 输出到控制台（自定义sink）
    level="INFO",                         # 控制台日志级别：INFO及以上
    format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}"  # 控制台日志格式
)
logger.info("控制台日志输出配置完成")

# 导出配置好的logger实例，供其他模块导入使用
logger = logger